package com.rainman.simpleredis.core.config;


import java.time.Duration;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;

/**
 * redis原始操作
 */
public interface RedisInterface {

    /**
     * 接入
     * StringRedisTemplate.opsForZSet().add
     *
     * @param pa
     * @return
     */
    Set<String> keys(String pa);

    /**
     * 接入
     * StringRedisTemplate.hasKey
     *
     * @param key
     * @return
     */
    Boolean hasKey(String key);

    /**
     * 接入
     * StringRedisTemplate.delete
     *
     * @param key
     * @return
     */
    Boolean delete(String key);

    /**
     * 接入
     * StringRedisTemplate.opsForValue().set
     * @param key
     * @param value
     */
    void set(String key, String value);

    /**
     * 接入
     * StringRedisTemplate.opsForValue().set
     * @param key
     * @param value
     * @param timeout
     */
    void set(String key, String value, Duration timeout);

    /**
     * 接入
     * StringRedisTemplate.opsForValue().setIfAbsent
     * @param key
     * @param value
     * @param timeout
     * @return
     */
    Boolean setIfAbsent(String key, String value, Duration timeout);

    /**
     * 接入
     * StringRedisTemplate.opsForValue().getValue
     * @param key
     * @return
     */
    String getValue(String key);


    /**
     * 接入
     * StringRedisTemplate.opsForValue().rightPush
     * @param key
     * @param value
     * @return
     */
    Long rightPush(String key, String value);

    /**
     * 接入
     * StringRedisTemplate.opsForValue().leftPop
     * @param key
     * @param timeout
     * @param unit
     * @return
     */
    String leftPop(String key, long timeout, TimeUnit unit);

    /**
     * 接入
     * StringRedisTemplate.opsForValue().index
     * @param key
     * @param index
     * @return
     */
    String index(String key, long index);

    /**
     * 获取当前Redis服务器时间
     * @return
     */
    Long curRedisTime();

    Long increment(String key);

    void convertAndSend(String channel, String message);

























}
